/**
 * 音乐播放器
 * Created by Jack on 2017/12/12.
 */
$(function () {
    var musicObj;//正在播放歌曲列表
    var player=document.getElementById("player");//播放器对象
    var playIndex=0;//歌曲播放记位
    var playType="order";//切歌类型 "order","listloop","singleloop","random"
    var playTypes=["order","listloop","singleloop","random"];
    /**
     * 载入歌曲
     */
    function loadMusic(){
        //载入歌曲列表
        $.getJSON("musics.json",function (data) {
            musicObj=data;
            //TODO 载入到右侧播放列表中
            $(".list-box-songnum").text(musicObj.length);
            $(musicObj).each(function () {
                $(".list-item-box table").append($('<tr>' +
                    '<td class="ico-palying"></td>' +
                    '<td class="song-name">'+this.musicName+'</td>' +
                    '<td class="singer-name">'+this.singger+'</td>' +
                    '<td class="ico-from">.</td>' +
                    '<td class="music-time">'+parseTime(this.time)+'</td>' +
                    '</tr>'));
            });
            initialMusic()
        });

        //载入歌词
    }
    loadMusic();
    /**
     * 初始化音乐及展示，准备等待播放按钮点击
     */
    function initialMusic(){
        $(".music-name").text(musicObj[playIndex].musicName);
        $(".music-singer").text(musicObj[playIndex].singger);
        $(".music-face").attr("src",musicObj[playIndex].coverUrl);

        if(musicObj[playIndex].love==true){
            $(".ico-love").css("background-image","url(images/lover.png)");
        }else{
            $(".ico-love").css("background-image","url(images/lover_none.png)");
        }
        //重置状态
        $(".play-stateposition").css("left","0%")
        $(".play-progress").css("width","0%");
        $(".play-bufferprogress").css("width","0%");
        //重置时间
        $(".play-statetime").text("00:00");
        $(".play-totaltime").text(parseTime(musicObj[playIndex].time));
        //载入音乐资源
        player.src=musicObj[playIndex].musicUrl;
        //播放
        player.autoplay=false;
        player.volume=0.5;
        //歌曲数量
        $(".list-num").text(musicObj.length);
        //调整播放列表中三角形的位置
        $(".list-item-box tr").eq(playIndex).find("td:eq(0)").addClass("active-palynow");
        $(".list-item-box tr").eq(playIndex).siblings().find("td:eq(0)").removeClass("active-palynow");
    }

    //播放按钮
    $(".ico-play").click(function () {
        togglePlayState(this);
    });
    /**
     * 切换播放状态
     * @param btn 要切换的图标对象
     */
    function togglePlayState(btn) {
        if($(btn).hasClass("ico-pause")){
            //更换为暂停状态
            player.pause();
            $(btn).removeClass().addClass("ico-play");
            $("#music-lrc-box iframe").contents().find(".changpian img").css({"animation-play-state":"paused"});
            $("#music-lrc-box iframe").contents().find(".bar").removeClass("barrotate");
        }else{
            //更换为播放状态
            player.play();
            $(btn).removeClass().addClass("ico-pause");
            //更改播放唱片机动画
            $("#music-lrc-box iframe").contents().find(".changpian img").addClass("cssfacerotate").css({"animation-play-state":"running"});
            //barrotate
            $("#music-lrc-box iframe").contents().find(".bar").addClass("barrotate");
        }
    }


    //缓冲进度事件
    $("#player").bind("progress",function () {
       //console.log(player.buffered)
            //获取缓存进度
            // if(player.buffered.end(player.buffered.length-1)==player.duration){
            //     clearInterval(timerToMusicBuffer);//结束监测
            // }

    });


    //播放位置改变
    $("#player").bind("timeupdate",function () {
        //计算进度百分比
        var process=(player.currentTime/player.duration)*100;
        //console.log("百分比："+process);
        $(".play-stateposition").css("left",process+"%")
        $(".play-progress").css("width",process+"%");
        $(".play-statetime").text(parseTime(parseInt(player.currentTime)));
    });


    //播放结束
    $("#player").bind("ended",function () {
        $(".ico-play").removeClass().addClass("ico-play");
        //播放列表中的下一首歌曲
        if(playIndex<=musicObj.length-1){
            changeMusicPlayIndex();
            //还有歌曲
            initialMusic();
            togglePlayState($(".ico-play").get(0));//切歌
        }else{
            //没有歌曲
            //隐藏歌曲小菜单
        }

    });
    /**
     * 根据歌曲列表播放类型决定播放的索引
     */
    function changeMusicPlayIndex(){
        switch(playType){
            case "order":
                //顺序播放
                playIndex++;
                console.log("顺序播放");
                break;
            case "listloop":
                //列表循环
                playIndex++;
                console.log("index:"+playIndex);
                if(playIndex>=musicObj.length){
                    //播完最后一首歌从头开始播放
                    playIndex=0;
                }
                console.log("列表播放");
                break;
            case "singleloop":
                //单曲循环
                console.log("单曲播放");
                break;
            case "random":
                //随机播放
                playIndex=parseInt(Math.ceil(Math.random()*musicObj.length))-1;
                //playIndex=;
                break;
        }
    }

    //上一首
    $(".ico-prevmusic").click(function () {
        //先判断播放列表中是否可以切歌
        if(!playIndex-1<0){
            --playIndex;
            initialMusic();
            togglePlayState($(".ico-play").get(0));//切歌
        }
    });


    //下一首
    $(".ico-nextmusic").click(function () {
        //先判断播放列表哦中是否可以切歌
        if(playIndex+1<musicObj.length){
            ++playIndex;
            initialMusic();
            togglePlayState($(".ico-play").get(0));//切歌
        }
    });


    /**
     * 解析时间为两位格式,不能超过1小时
     * @param time
     * @returns {string|*}
     */
    function parseTime(time){
        //计算分
        var timeResult;
        var minute=parseInt(time/60);//计算分钟
        var second=time%60;//秒
        minute=minute>=10?minute:"0"+minute;
        second=second>=10?second:"0"+second;
        timeResult=minute+":"+second;
        return timeResult;
    }


    var globalVolumen=$(".ico-volume").attr("data");
    //静音按钮
    $(".ico-volume").click(function () {
        var volume=$(this).attr("data");//音量
        if(volume>0){
            //静音
            $(this).attr("data","0");
            player.volume=0;
            //进度
            $(".volume-progress").width("0%");
            $(".volume-stateposition").css("left","0%");
            //更换背景图片
            $(this).css("background-image","url(images/ico_volume_none.png)")
        }else{
            //回归原来音量
            $(this).attr("data",globalVolumen);
            player.volume=globalVolumen;
            //进度
            $(".volume-progress").width(globalVolumen*100+"%");
            $(".volume-stateposition").css("left",globalVolumen*100+"%");
            $(this).css("background-image","url(images/ico_volume.png)")
        }
    });

    //播放进度调整
    $(".play-progress-box").click(function (event) {
        var mouseLeft=event.clientX;
        var musicWidth=(mouseLeft-$(this).offset().left)/$(this).width();
        //调整效果
        $(".play-progress").width(musicWidth*100+"%");
        $(".play-stateposition").css("left",musicWidth*100+"%");
        //调整进度-如果不生效音乐流媒体http请求头影响，不使用WebStrom自带服务器测试
        player.currentTime=player.duration*musicWidth;
        //console.log(player.duration+" "+musicWidth);
    });


    //音量调整
    $(".volume-progress-box").click(function (event) {
        //音量=鼠标在方块中的位置-宽度
        //鼠标距离左边的位置
        var mouseLeft=event.clientX;
        var volumeWidth=(mouseLeft-$(this).offset().left)/$(this).width();
        //调整效果
        $(".volume-progress").width(volumeWidth*100+"%");
        $(".volume-stateposition").css("left",volumeWidth*100+"%");
        //调整音量
        player.volume=volumeWidth;
    });
    //鼠标按下滑动
    // $(".volume-stateposition").mouseenter(function (event) {
        //鼠标的位置
    //    var mouseLeft=event.clientX;
    //});
    //鼠标移动
    //$("")

    //播放类型的切换
    $(".play-type").click(function () {
        var type=parseInt($(this).attr("typeindex"))+1;
        $(this).attr("typeindex",type%4);//更换状态
        //切换图片
        $(this).css("background-image","url(images/ico_playstate_"+playTypes[type%4]+".png)");
        playType=playTypes[type%4];
        console.log(playType);
    });
});
